/**
WOP_Obj_Entry

進一步定義Entry中的關於Obj基本attribute
Obj和其他的兄弟內容有相當大的不同。

簡單的比較一下Ref跟Obj，Ref相當於pointer，而Obj相當於該物件在記憶體中的實體


賴念煒 -06/12/24 新增檔案。

	撰寫method說明。
**/

#ifndef _WOP_Obj_Entry_H_
#define	_WOP_Obj_Entry_H_
/*------------------------------------------------------------*/
#include "WOP_Heap_Entry.h"
//#include "src/MappingTree.h"

//這個include Vector是經由VC ++給予的"新增include目錄"功能，把前方的路徑省略
//所以如果換其他的IDE發現路徑錯誤，請自行更改路徑。
//Vector元件原位址:"smith/util/Vector.h"
#include <cassert>
#include <map>

#define FLAG_AT "@"
class WOP_Obj_Entry:public WOP_Heap_Entry{

protected:
	WOP_Obj_Entry(){}
	std::map<std::string,std::string> _name_type_map ;

public:
	WOP_Obj_Entry(std::string s,WOP_Entry *parent);//其name和value皆為記憶體hashcode(JDB給予)
	std::string getActualPath(std::string name);
	std::string getTypeStr() { return std::string("object"); }
	std::string getClassName() ; 
	WOP_Entry *getChildEntryByName(std::string name) ;

	void unfold() ;
	/** return the map which contains all the <varname, typename> pair.
	    This method is called by GUI */
	std::map<std::string, std::string> getVarTypeMap(); 
	std::vector<std::pair<std::string, std::string>> getVarTypeVector() ;

	};
/*------------------------------------------------------------*/
#endif	//#ifndef _WOP_Obj_Entry_H_